//
// Light.hpp for  in ~/Dropbox/Projets/raytracer-2016/Includes/Lights/
//
// Made by Jonathan
// Login   <ledey_l@epitech.net>
//
// Started on  Tue Sep 24 20:40:26 2013 Jonathan
// Last update Thu Sep 26 00:18:27 2013 Jonathan
//

#ifndef				LIGHT_HPP_
# define			LIGHT_HPP_

# include			"Maths/Vector.hpp"
# include			"Maths/Color.hpp"
# include			"Maths/ShadeRec.hpp"

namespace			Lights
{
  class				Light
  {
  protected:
    long double			mRadianceScale;
    Maths::Vector		mDirection;
    Maths::Color		mColor;

  public:
    Light(void);
    Light(Light const &rOther);
    Light		&operator=(Light const &rOther);
    virtual ~Light(void);

    virtual Light		*Clone(void) const = 0;
    void			ScaleRadiance(long double rValue);
    void			SetColor(long double rColor);
    void			SetColor(Maths::Color const &rColor);
    void			SetColor(long double rR, long double rG, long double rB);
    void			SetDirection(Maths::Vector const &rDirection);
    void			SetDirection(long double rX, long double rY, long double rZ);
    virtual Maths::Vector	GetDirection(Maths::ShadeRec const &rShadeRec) const;
    virtual Maths::Color	GetRadiance(Maths::ShadeRec const &rShadeRec) const;
  };
};

#endif				/* LIGHT_HPP_ */
